Sistemas de Información Gerencial

Algoritmo k-means

Autores: Arroyo, A. & Espinoza, P. & Bayona, E. & Lino, E. & Mendoza, J.

Importación de librerías

Conexión con la BDD PostgreSQL mediante librería psycopg2 y obtención de data

Ver tipo de datos de las columnas

Visualización de primeras filas del dataframe

Se eliminan las columnas que no interesan, como id, usuario, entre otros, debido a que la agrupación de k-means se hace con tipos de datos numéricos

Ahora todos las columnas tienen un tipo de dato similar. Ahora es posible la agrupación de individuos

Se obtienen estadísticos descriptivos. Se puede notar una variación radical de valores, es necesario normalizar

Normalización de los datos

Se normalizan los valores mediante una simple fórmula, obteniendo así valores entre 0 y 1 en todos los individuos

Estadísticos descriptivos con valores normalizados

Búsqueda de cantidad óptima de clusters

Al desconocer el número de cluster requeridos, se pone un valor arbitrario de 10 y 300 iteraciones para dar con una buena cantidad de clusters para los datos.

WCSS (Within-Cluster Sum of Squares) o suma de cuadrados dentro del conglomerado

Gráfica de resultados de WCSS para formar el codo de Jambú

El codo de Jambú nos indica la razón de la similitud entre individuos y el número de clusters

Se elige el punto donde la gráfica deja de disminuir significativamente, en este caso fueron 3 clusters

Aplicación de método k-means

La función "KMeans(n_clusters, max_iter)" y su método "fit(data)" se encarga de la lógica del algoritmo k-means, siendo la idea principal: ¿qué tan similares son los individuos dentro del cluster?

Agregando clasificación a la data original

Visualización de clusters formados

Se aplica el análisis de componentes principales para darnos una idea de como se formaron los clusters

Básicamente se aplican componentes principales porque la data original tiene varias columnas (componentes), y para ser presentada en un plano bidimensional es necesario dos componentes

En este sentido, se obtienen dos componentes que representan todas las columnas de la data

Usando la librería matplotlib.pyplot (plt) se grafican los resultados